package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.NavDao;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.service.NavService;
import com.cn.wanxi.util.IOTool;
import com.cn.wanxi.util.Path;
import com.cn.wanxi.util.Tool;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 数据来源于文件
 */
public class NavServiceImpl implements NavService {


    @Override
    public NavModel[] getNavModels() {

//        1.创建文件
        File file = IOTool.createFile(Path.PATH, Path.FILE_NAME_NAV);
//        2.写入到文件
        List<String> list = getDaoData();
        IOTool.writeFile(file, list);
//        3.读取文件数据
        String result = IOTool.readCharFile(file);
//        4.封装数据
//        5.返回数据
        return setData(result);

    }

    private List<String> getDaoData() {
        List<String> list = new ArrayList<>();
        list.add(Arrays.toString(NavDao.HREFS));
        list.add(Tool.arrToString(NavDao.TITLES));
        return list;
    }


    /**
     * 写入数据
     *
     * @param file
     */
    private void writeFile(File file) {
        try {
            String split = "\r\n";
            OutputStream outputStream = new FileOutputStream(file);
            outputStream.write(Arrays.toString(NavDao.HREFS).getBytes());
            outputStream.write(split.getBytes());
            outputStream.write(Tool.arrToString(NavDao.TITLES).getBytes());
            outputStream.write(split.getBytes());
//            outputStream.write(Arrays.toString(NavDao.HREFS).getBytes());
//            String[] arr = {"01", "10", "20", "03", "4", "5"};
//            StringBuilder str5 = new StringBuilder();
//            for (int i = 0; i < arr.length; i++) {
//                if(i==arr.length-1){
//                    str5.append(arr[i]);
//                }else {
//                str5.append(arr[i]).append(",");
//                }

//            }
//            01,10,20,03,4,5，
//            我们可能只取字符串的前面的字符，不要最后一个逗号[)
//            String aa = str5.toString();

//            System.out.println(aa.substring(0, aa.length() - 1));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

//    /**
//     * 创建文件
//     *
//     * @return
//     */
//    private File createFile() {
//        String path = "E:\\wanxi\\step-3\\canyin03-0228\\web\\note";
//        String fileName = "nav.txt";
//        File directory = new File(path);
//        if (!directory.exists()) {
//            directory.mkdirs();
//        }
//        File file = new File(directory, fileName);
//        try {
//            file.createNewFile();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return file;
//    }

    /**
     * 封装导航数组
     *
     * @param result
     * @return
     */
    private NavModel[] setData(String result) {
        System.out.println(result);
        String[] results = result.split(Path.WRITE_SPLIT);
//        [/home, /company, /news, /product, /online, /callus]
        String[] hrefs = results[0].split(Path.ARRAY_SPLIT);
//        hrefs应该去掉中括号和空格
//        我们可以想如果我们将中括号替换掉，可以吗？将中括号替换为空字符串
//        replace替换
//        网站首页,公司介绍,新闻介绍,产品介绍,在线留言,联系我们
        String[] titles = results[1].split(Path.SPLIT);

        int length = hrefs.length;
        NavModel[] navModels = new NavModel[length];
        for (int i = 0; i < length; i++) {
            NavModel navModel = new NavModel();
//        将对象进行赋值
            navModel.setHref(Tool.replace(hrefs[i]));
            navModel.setTitle(titles[i]);
            navModels[i] = navModel;
        }
        return navModels;
    }


}
